Android取经之路——启动篇
Android背景
现如今,几乎人手一台手机,据统计,平均每人每天花在手机上的时间达到了3-4小时,现在主流的支柱型手机系统是Android、IOS。
研究公司Gartner最近分享了一份数据,数据显示去年全球销售的智能手机中,有99.9%都是基于Android或iOS平台的,Android比iOS的市场占有率高很多,分别是85.9%与14%,因为有每年都有上百款新手机搭载Android问世。2019年3月,Google发布了Android 10.0测试版。
既然Android那么流行,那么到底他是如何工作的,他的内部构造是什么,很值得我们深入研究学习。最近也看了老罗-罗升阳的Android之旅,老罗不愧为大神级人物,每个模块讲解的都很深入,但是其中都是基于Android2.2,与现在的版本已经差了好几个大版本,现在最新的版本是Android10.0-Android Q,因此接下来我会基于Android10.0的源码进行展开学习。
准备学习分享的内容从以下几个方面进行:
语法:
- C语言:
入门书籍:《The C ProGramming Language》
进阶书籍:《C与指针》
参考我的头条号:@大猫玩程序《C与指针心得》
- JAVA语言:
入门书籍:《Head first java》
进阶书籍:《thinking in java》
- C++语言:
建议书籍:《C++ Primer》、《C++ Primer Plus》
参考我的头条号:@大猫玩程序《C++ primer plus 心得》
- MakeFile:
入门书籍:《跟我一起写Makefile》
- Python:
入门书籍:《Python核心编程》
参考我的博客:《跟我一起写Python》 http://tianger.github.io/categories/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99python/
Android系统源码学习:
一、Android的系统架构
二、Android系统启动
- Init进程
- zygote
- System_server
- SericeManager
- PackageManager
- App启动进程
三、Android的通信机制
1.IPC 进程间通信:
(1)管道PIPE
(2)消息队列
(3)共享内存
(4)套接字 Socket
(5)信号量-signal (kernel使用)
(6)Binder -binder, vndbinder, hwbinder
2.进程内--线程间通信
(1)Handler
3. 多线程机制
4. 线程的同步异步机制
四、四大组件
- Activity
- Service
- Broadcast Receiver
- Content Provider
五、进程系列
- 进程创建流程
- 杀进程原理
- 线程创建流程
- 进程优先级
- 进程调度
六、系统服务
- DropBox
- 日志系统--Logd
- Telepony--RILD--QCRIL
七、内存、存储机制
- Linux内存管理
- Android内存分析方法-addr2line, malloc_debug
- Android存储系统
八、虚拟机
- ART
九、系统稳定性
- ANR
- JAVA crash
- Nativate C crash
- watchdog
- ART虚拟机之Trace原理
- Native进程之Trace原理
十、设计模式
- 单例
- 反射机制
- 工厂模式
- 观察者
- ......
十一、内核的学习
- 如何写一个内核驱动
- 内核与Nativate C的交互方法
十二、Selinux
- 原理
- 如何配置
- neverallow解决办法
十三、Android编译原理
- 理解编译过程
- 理解Makefile和soong的编译语法,配置及过程
- Android bp的配置方法
十五、高通处理器下载原理
- Sahara协议
- Firehose协议
十六、高通Modem的task创建以及RCinit原理
- 如何创建一个TASK
- RCInit原理,task启动、初始化时序
十七、Trace32解析高通死机Dump并进行内存分析